home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
door
/
r174chtr.zip
/
RSB5CHTR.MRG
< prev
next >
Wrap
Text File
|
1992-07-27
|
22KB
|
533 lines
* ------------[ BLED merge (c) Ken Goosens ]-------------
* Merge this against D:\1740704\RBBSSUB5.BAS to produce D:\SOURCE\RBBSSUB5.BAS
* D:\1740704\RBBSSUB5.BAS: Date 7-26-1992 Size 116575 bytes
* ------------[ Created 07-27-1992 00:13:16 ]------------
* REPLACING old line(s) by new
63630 ' * Sets the user preferences based on user record.
' * Formerly in RBBS-PC.BAS
SUB SetUserPref STATIC
IF ZWasA THEN _
ZUserSecLevel = ZSysopSecLevel _
ELSE ZUserSecLevel = CVI(ZSecLevel$)
ZBankTime = ASC(ZBankTime$)
ZLastMsgRead = CVI(MID$(ZUserOption$,3,2))
ZUserXferDefault$ = MID$(ZUserOption$,5,1)
IF ZUserXferDefault$ = " " THEN _
ZUserXferDefault$ = "N"
CALL XferType (2,ZTrue)
WasX = ASC(MID$(ZUserOption$,6,1))
ZWasGR = (WasX MOD 3)
ZBoldText$ = CHR$(48 - (WasX > 50))
ZUserTextColor = (WasX - ZWasGR)/3 + 21
IF ZUserTextColor > 37 THEN _
ZUserTextColor = ZUserTextColor - 7
IF ZEmphasizeOff$ <> "" THEN _
CALL QuickTPut (ZColorReset$,0)
IF ZEmphasizeOnDef$ <> "" THEN _
ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + ";40;" + MID$(STR$(ZUserTextColor),2) + "m" _
ELSE ZEmphasizeOff$ = ""
IF ZWasGR = 1 AND NOT ZEightBit THEN _
ZWasGR = 0
CALL SetGraphic (ZWasGR)
ZRightMargin = CVI(MID$(ZUserOption$,7,2))
IF ZRightMargin > 72 THEN _
ZRightMargin = 72
IF NOT ZConfMode THEN _
ZWasCI$ = ZCityState$ : _
CALL Trim (ZWasCI$)
UserOptions = CVI(MID$(ZUserOption$,9,2))
ZPromptBell = (UserOptions AND 1) > 0
ZExpertUser = (UserOptions AND 2) > 0
CALL SetExpert
ZNulls = (UserOptions AND 4) > 0
ZUpperCase = (UserOptions AND 8) > 0
ZLineFeeds = (UserOptions AND 16) > 0
ZCheckBulletLogon = (UserOptions AND 32) > 0
ZSkipFilesLogon = (UserOptions AND 64) > 0
ZAutoDownDesired = (UserOptions AND 128) > 0
ZReqQuesAnswered = (UserOptions AND 256) > 0
ZMailWaiting = (UserOptions AND 512) > 0
WasX = (UserOptions AND 1024 ) > 0
CALL SetHiLite (NOT WasX)
IF NOT ZHiLiteOff THEN _
CALL QuickTPut (ZEmphasizeOff$,0)
ZTurboKeyUser = (UserOptions AND 2048) > 0
ZTurboKey = ZFalse
* ------[ first line different ]------
ZAvailableForChat = (UserOptions AND 4096) > 0 ' CHT
CALL SetRegDisplay
ZPageLength = ASC(MID$(ZUserOption$,13,1))
IF ZSubBoard THEN _
GOTO 63632
WasX$ = ZEchoer$
ZEchoer$ = MID$(ZUserOption$,14,1)
IF INSTR("ICR",ZEchoer$) = 0 THEN _
ZEchoer$ = "R"
IF WasX$ <> ZEchoer$ THEN _
CALL ReportEcho
CALL SetEcho (ZEchoer$)
* INSERTING new line(s)
63680 ' $SUBTITLE: 'LogNewForChat - Save user info for chat'
' $PAGE
'
' NAME -- LogNewForChat
'
'
' OUTPUTS -- Updates the node record in CHAT.LOG with this users
' name and chat activity (always "I") when the user logs on.
'
' PURPOSE -- See above OUTPUTS
'
SUB LogNewForChat(ZMaxnodes) STATIC
FileName$ = "CHAT.LOG" 'CHT101201
CALL FindItX (FileName$, 9)
IF NOT ZOK THEN
CALL OpenWrk9 (FileName$)
FIELD 9, 128 AS TempNode$
LSET TempNode$ = SPACE$(128)
FOR Index = 1 TO ZMaxNodes
CALL LockIt9 (Index, ZFalse)
NEXT
END IF
ChatIndex = ZNodeRecIndex - 1
CLOSE 9
CALL OpenWrk9 (FileName$)
FIELD 9, 1 AS ChatActivity$, _
2 AS PagingNode$, _
2 AS PrivateFor$, _
72 AS ChatInput$, _
10 AS ChatName$, _
1 AS InFullScreenChat$
CALL LockIt9 (ChatIndex, ZTrue)
LSET ChatActivity$ = "I" ' I means inactive
LSET PagingNode$ = MKI$(0)
LSET ChatName$ = SPACE$(31)
IF ZFirstName$ = ZSysopPswd1$ THEN 'CHT101401
LSET ChatName$ = "SYSOP"
ELSE
LSET ChatName$ = ZFirstName$ 'CHT101401
END IF
LSET ChatInput$ = SPACE$(72)
LSET PrivateFor$ = MKI$(0)
LSET InFullScreenChat$ = "I"
CALL LockIt9 (ChatIndex, ZFalse)
CLOSE 9
END SUB
63685 ' $SUBTITLE: 'CBCHECK - Check for a page attempt'
' $PAGE
'
' NAME -- CBCHECK
'
' INPUTS -- NONE
'
' OUTPUTS -- ChatActivity$ Changed to reflect whether or not they
' are going to chat
'
' PURPOSE -- Check to see if we have been paged from another node
'
SUB CBCHECK STATIC
ZOutTxt$ = ""
DoFullScreenChat = ZFalse
FileName$ = "CHAT.LOG" 'CHT101201
CALL FindItX (FileName$, 9)
IF ZOK THEN
ChatIndex = ZNodeRecIndex - 1
CLOSE 9
CALL OpenWrk9 (FileName$)
FIELD 9, 1 AS ChatActivity$, _
2 AS PagingNode$, _
2 AS PrivateFor$, _
72 AS ChatInput$, _
10 AS ChatName$, _
1 AS InFullScreenChat$
CALL LockIt9 (ChatIndex, ZTrue)
IF ChatActivity$ = "R" THEN 'R means request for chat
PagerIndex = CVI(PagingNode$)
CALL RingCaller
CALL LockIt9 (PagerIndex, ZTrue)
DoFullScreenChat = (InFullScreenChat$ = "A")
CALL TrimTrail (ZOutTxt$, " ")
Index$ = MID$(STR$(PagerIndex), 2, 2) 'CHT101401
CALL QuickTPut("Node " + Index$ + " has requested you to enter CHAT!", 1) 'CHT011402
ZOutTxt$ = "Do you plan to enter CHAT? (Y/[N])" 'CHT101201
ZSubParm = 1
CALL TGet
CALL LockIt9 (ChatIndex, ZTrue)
IF ZNo OR (ZWasQ = 0) THEN
LSET ChatActivity$ = "N" 'NO I WON'T BE CHATTING
ELSE
LSET ChatActivity$ = "Y" 'YEAH I'LL BE CHATTING
CALL QuickTPut("Type @ to enter CHAT!", 1) 'CHT101201
CALL SkipLine(1) 'CHT101201
END IF
IF DoFullScreenChat THEN
LSET InFullScreenChat$ = "Y"
ELSE
LSET InFullScreenChat$ = "I"
END IF
CALL LockIt9 (ChatIndex, ZFalse)
CALL UpdtCalr("Paged to CHAT by Node" + STR$(PagerIndex), 1)
END IF
CLOSE 9
END IF
END SUB
63690 ' $SUBTITLE: 'CBCHAT - This is the actual chat code'
' $PAGE
'
' NAME -- CBCHAT
'
' INPUTS -- NODES.IN.SYSTEM
'
' INTERNAL - NodesToSquelch$ STRING OF NODES NOT TO RECEIVE TEXT FROM
' HasPaged NODE (IF ANY) THAT THIS USER PAGED
' CurrentNodeIndex NODE RECORD IN "CHAT.LOG"
' ChatActivity$ CURRENT STATUS OF EACH NODE (CHAT.LOG)
' PagingNode$ NODE WHICH HAS PAGED THIS ONE (CHAT.LOG)
' PrivateFor$ THIS IS TURNED ON FOR PRIVATE MSG
' ChatInput$ CURRENT TEXT INPUT BY USER FOR CHATTING
' ChatName$ NAME OF USER ON EACH NODE (NOT ALWAYS USED)
' SquelchIt BOOLEAN - MEANS NODE IS IGNORED
' ZOutTxt$(0) THIS IS TEXT TYPED BY -THIS- NODE
' ZUserIn$() USED TO SAVE CURRENT STATUS OF EACH NODE
' THIS INFO IS LATER COMPARED, AND IF THAT
' STATUS IS CHANGED, THEN THE USER IS NOTIFIED
' ChatHold$() USED TO SAVE CURRENT TEXT INPUT BY EACH USER
' DoFullScreenChat MEANS OTHER USER HAS PAGED FROM TRUECH@
' MODE, SO CBCHAT DROPS TO 'SUB TRUECHAT'
' THEN EXITS AFTERWARDS.
'
'
' OUTPUTS -- NONE
'
' PURPOSE -- To allow users to chat between nodes in several different
' ways.
'
SUB CBCHAT(ZMaxnodes) STATIC
' Change below to LogChatToDisk = ZFalse if you do not wish to record
LogChatToDisk = ZTrue
SavingToDisk = ZFalse
DoFullScreenChat = ZFalse
NodesToSquelch$ = "" 'NODES TO SQUELCH (OBVIOUSLY)
HasPaged = 0
FileName$ = "CHAT.LOG" 'CHT101201
CALL FindItX (FileName$, 9)
IF ZOK THEN
HasPaged = 0
CurrentNodeIndex = ZNodeRecIndex - 1
CLOSE 9
CALL OpenWrk9 (FileName$)
FIELD 9, 1 AS ChatActivity$, _
2 AS PagingNode$, _
2 AS PrivateFor$, _
72 AS ChatInput$, _
10 AS ChatName$, _
1 AS InFullScreenChat$, _
4 AS FullScreenChatIndex$,_
1 AS SavingToDisk$
CALL UpdtCalr("Entered CHAT at " + TIME$, 1)
CALL SkipLine(1)
CALL QuickTPut(" Ctrl-P Page another Node! ( Public multiple node CHAT)", 1) 'CHT101101
CALL QuickTPut(" Ctrl-W Who is on? (List Callers on each node.)", 1) 'CHT101201
CALL QuickTPut(" <?> Instructions!", 1) 'CHT101201
CALL QuickTPut(" <ESC> Exit CHAT!", 1) 'CHT101202
CALL SkipLine(1) 'CHT101201
CALL QuickTPut(" Command: Ctrl-P, Ctrl-W, ESC to Exit, ?>",2) 'CHT101202
REDIM ChatHold$(ZMaxnodes)
CALL LockIt9 (CurrentNodeIndex, ZTrue)
DoFullScreenChat = (InFullScreenChat$ = "Y")
LSET ChatActivity$ = "A"
LSET PrivateFor$ = MKI$(0)
CALL LockIt9 (CurrentNodeIndex, ZFalse)
FOR LineIndex = 1 TO ZMaxnodes
CALL LockIt9 (LineIndex, ZTrue)
ZUserIn$(LineIndex) = ChatActivity$
NEXT
ReadyToEnter = ZFalse
ZAutoLogoff! = TIMER + ZWaitBeforeDisconnect
WasA1$ = ZActiveMessageFile$
ZActiveMessageFile$ = ZOrigMsgFile$
CALL OpenMsg
FIELD 1, 128 AS ZMsgRec$
DO
IF DoFullScreenChat THEN
CALL FullScreenChat(CurrentNodeIndex, HasPaged, ZMaxnodes)
EXIT DO
END IF
FOR LineIndex = 1 TO ZMaxnodes
SquelchIt = ZFalse
IF LineIndex <> CurrentNodeIndex THEN
CALL LockIt9 (LineIndex, ZTrue)
Index$ = MID$(STR$(LineIndex), 2, 2)
IF NodesToSquelch$ <> "" THEN
SquelchIt = (INSTR(NodesToSquelch$, Index$) > 0)
END IF
IF NOT SquelchIt THEN
SquelchIt = (InFullScreenChat$ = "A")
END IF
IF HasPaged = LineIndex THEN
IF ChatActivity$ <> "R" THEN
IF ChatActivity$ = "N" THEN
CALL QuickTPut("Paged user will not be entering CHAT!", 1) 'CHT101402
HasPaged = 0
ELSEIF ChatActivity$ = "Y" THEN
CALL QuickTPut("Paged! User should be entering CHAT momentarily!", 1) 'CHT101402
HasPaged = 0
END IF
END IF
END IF
ChatTemp$ = ""
NameTemp$ = ""
IF NOT SquelchIt THEN
IF (ZUserIn$(LineIndex) = "A") AND (ChatActivity$ = "I") THEN
CALL QuickTPut("Node "+ Index$ + " has exited CHAT!", 1) 'CHT101201
END IF
IF (ZUserIn$(LineIndex) <> "A") AND (ChatActivity$ = "A") THEN
CALL QuickTPut("Node " + Index$ + " has entered CHAT!", 1) 'CHT101201
END IF
END IF
ZUserIn$(LineIndex) = ChatActivity$
IF (ChatActivity$ = "A") AND (NOT SquelchIt) THEN
GET 1, (LineIndex + 1)
IF MID$(MESSAGE.RECORD$, 55, 2) = "-1" AND NOT ZSysop THEN
NameTemp$ = "SYSOP"
ELSE
NameTemp$ = MID$(MESSAGE.RECORD$,1,26)
END IF
ChatTemp$ = ChatInput$
CALL TrimTrail (ChatTemp$, " ")
CALL TrimTrail (ChatHold$(LineIndex), " ")
IF (ChatTemp$ <> ChatHold$(LineIndex)) AND ChatTemp$ <> "" THEN
IF (CVI(PrivateFor$) = 0) OR (CVI(PrivateFor$) = CurrentNodeIndex) THEN
CALL TrimTrail(ChatName$, " ") 'CHT101301
ZOutTxt$ = ChatName$ + "<" + Index$ + "> " + ChatTemp$ 'CHT101301
CALL QuickTPut(ZOutTxt$, 1)
IF LogChatToDisk AND SavingToDisk THEN
CALL PrintWork(ZOutTxt$ + CHR$(10) + CHR$(13))
END IF
ChatHold$(LineIndex) = ChatTemp$
END IF
END IF
END IF
END IF
NEXT
ZOutTxt$(0) = "" 'chat work string
ReadyToEnter = ZFalse
IF NOT ZLocalUser THEN
CALL EOFComm (ZChar%)
ELSE
ZChar% = -1
END IF
IF ZChar% <> -1 THEN 'if remote key in then get complete
CALL GetCom(Key$)
ELSE
Key$ = INKEY$ 'else check for local
END IF
IF Key$ <> "" THEN
IF LEN(Key$) = 1 THEN
IF Key$ = ZEscape$ THEN
EXIT DO
ELSEIF Key$ = CHR$(13) THEN
ZOutTxt$(0) = ""
ELSEIF Key$ = CHR$(16) THEN
CALL PageEm(CurrentNodeIndex, HasPaged, ZMaxnodes, 0)
IF HasPaged = -1 THEN
EXIT DO
END IF
IF LogChatToDisk THEN
ZTempTime$ = TIME$
ZTempDate$ = DATE$
FileName$ = LEFT$(ZTempDate$, 2) + "-" + MID$(ZTempDate$, 4, 2) + "-" + LEFT$(ZTempTime$ , 2) + ".CHT"
CLOSE 2
CALL OpenOutW(FileName$)
CALL SkipLine(1) 'CHT101201
ZOutTxt$ = "This CHAT may be seen by your SysOp." 'CHT101201
CALL QuickTPut1(ZOutTxt$)
CALL LockIt9 (CurrentNodeIndex, ZTrue)
LSET SavingToDisk$ = "Y"
CALL LockIt9 (CurrentNodeIndex, ZFalse)
SavingToDIsk = ZTrue
END IF
ELSEIF Key$ = CHR$(20) THEN
CALL FullScreenChat(CurrentNodeIndex, HasPaged, ZMaxnodes)
EXIT DO
ELSEIF Key$ = CHR$(23) THEN
CALL PageEm(CurrentNodeIndex, HasPaged, ZMaxnodes, -1)
ELSEIF Key$ = CHR$(63) THEN
CALL BufFile ("CHATHELP", X)
ELSE
ZOutTxt$(0) = Key$
ReadyToEnter = ZTrue
END IF
END IF
END IF
IF ReadyToEnter THEN
CALL QuickTPut("> " + ZOutTxt$(0), 0)
CALL LineEdit (0, 64)
ReadyToEnter = ZFalse
ZAutoLogoff! = TIMER + ZWaitBeforeDisconnect
END IF
IF ZOutTxt$(0) <> "" THEN
IF LogChatToDisk AND SavingToDisk THEN
Index$ = MID$(STR$(CurrentNodeIndex), 2, 2)
CALL PrintWork("<" + Index$ + ">" + ZActiveUserName$ + ": " + ZOutTxt$(0) + CHR$(10) + CHR$(13))
END IF
PrivateMessage = 0
IF LEFT$(ZOutTxt$(0), 1) = "*" THEN
PrivateMessage = VAL(MID$(ZOutTxt$(0), 2))
IF NodesToSquelch$ <> "" THEN
Squelched = INSTR(NodesToSquelch$, MID$(ZOutTxt$(0), 2, 1))
IF Squelched = 1 THEN
IF LEN(NodesToSquelch$) = 1 THEN
NodesToSquelch$ = ""
ELSE
NodesToSquelch$ = MID$ (NodesToSquelch$, Squelched + 1)
END IF
ELSEIF Squelched > 1 THEN
NodesToSquelch$ = LEFT$(NodesToSquelch$, Squelched - 1) + _
MID$ (NodesToSquelch$, Squelched + 1)
END IF
IF Squelched > 0 THEN
CALL QuickTPut("Node " + ZFirstName$ + MID$(ZOutTxt$(0), 2, 1) + " has been UNsquelched!", 1)
END IF
END IF
IF LEN(ZOutTxt$(0)) > 2 THEN
ZOutTxt$(0) = MID$(ZOutTxt$(0), 3)
ELSE
ZOutTxt$(0) = ""
END IF
ELSEIF LEFT$(ZOutTxt$(0), 1) = "!" THEN
NodesToSquelch$ = NodesToSquelch$ + MID$(ZOutTxt$(0), 2, 1)
CALL QuickTPut("Node " + MID$(ZOutTxt$(0), 2, 1) + " has been squelched!", 1)
IF LEN(ZOutTxt$(0)) > 2 THEN
ZOutTxt$(0) = MID$(ZOutTxt$(0), 3)
ELSE
ZOutTxt$(0) = ""
END IF
END IF
ChatHold$(CurrentNodeIndex) = ZOutTxt$(0) + SPACE$(72 - LEN(ZOutTxt$(0)))
CALL LockIt9 (CurrentNodeIndex, ZTrue)
LSET ChatInput$ = ChatHold$(CurrentNodeIndex)
IF PrivateMessage THEN
LSET PrivateFor$ = MKI$(PrivateMessage) 'PRIVATE
ELSE
LSET PrivateFor$ = MKI$(0) 'PUBLIC
END IF
CALL LockIt9 (CurrentNodeIndex, ZFalse)
END IF
CALL CheckCarrier
IF ZSubParm = -1 THEN
EXIT DO
END IF
CALL CheckTimeRemain(MinsRemaining)
IF ZSubParm = -1 THEN
EXIT DO
END IF
CALL CheckTime(ZAutoLogoff!, TempElapsed!, 1)
IF TempElapsed! <=0 THEN
ZWaitExpired = ZTrue
EXIT DO
END IF
LOOP
CALL LockIt9 (CurrentNodeIndex, ZTrue)
LSET ChatInput$ = SPACE$(62)
LSET ChatActivity$ = "I"
CALL LockIt9 (CurrentNodeIndex, ZFalse)
CLOSE 9
END IF
CLOSE 2
ZActiveMessageFile$ = WasA1$
END SUB
63695 ' $SUBTITLE: 'PageEm - attempt to page another user to chat'
' $PAGE
'
' NAME -- PageEm
'
' INPUTS -- SHOW.ONLY Show whos is on the other nodes only
' ZMaxnodes Number of nodes in this system
'
' OUTPUTS -- HasPaged -1 exit chat mode
' 0 don't check for reply to page
' 1 - ZMaxnodes check for page reply
'
' PURPOSE -- Page another user on the system and set up for a reply
' from the other user
'
SUB PageEm(CurrentNodeIndex, HasPaged, ZMaxnodes, ShowOnly) STATIC
CALL WhosOn (ZMaxnodes)
CALL SkipLine(1)
IF ShowOnly THEN
EXIT SUB
END IF
ZOutTxt$ = "Which Node do you wish to page (1 -" + STR$(ZMaxnodes) +")" + PRESS.ENTER$
ZSubParm = 1
CALL TGet
IF ZWasQ = 0 THEN
HasPaged = -1
EXIT SUB
END IF
CALL CheckInt(ZUserIn$(1))
FIELD 9, 1 AS ChatActivity$, _
2 AS PagingNode$, _
2 AS PrivateFor$, _
72 AS ChatInput$, _
31 AS ChatName$, _
1 AS InFullScreenChat$
IF ZTestedIntValue > 0 AND ZTestedIntValue <= ZMaxnodes AND _
ZTestedIntValue <> CurrentNodeIndex THEN
CALL SkipLine(1) 'CHT101201
CALL QuickTPut("Please hold, I'll inform them of your request!", 1) 'CHT101290
CALL SkipLine(1) 'CHT101201
CALL QuickTPut("If you don't get an answer within a couple minutes,", 1) 'CHT101201
CALL QuickTPut("they may be busy transferring a file.", 1) 'CHT101201
CALL LockIt9 (ZTestedIntValue, ZTrue)
IF ChatActivity$ = "A" THEN 'if other node already
IF InFullScreenChat$ = "A" THEN 'can't page 'em if in true chat
CALL SkipLine(1)
HasPaged = -1
ELSE
HasPaged = 0
END IF
EXIT SUB
END IF
LSET ChatActivity$ = "R" 'R means Request
LSET PagingNode$ = MKI$(CurrentNodeIndex)
HasPaged = ZTestedIntValue
CALL LockIt9 (ZTestedIntValue, ZFalse)
ELSE
HasPaged = -1
END IF
END SUB
63698 ' $SUBTITLE: 'FullScreenChat - To be added when buffering is figured out'
SUB FullScreenChat STATIC
' I am currently working on a door for the MainFraim chat to exit to.
' The door will be a char for char internode chat.
' Until then Line for line chat is the best these mods do. That exit
' Routine will go here. - Tom Hansen
END SUB